/**
 * @file testList.c
 * @brief 用于ListType的单元测试
 * @version 0.1
 * @date 2022-05-10
 *
 * @copyright Copyright (c) 2022
 *
 */
#include <stdio.h>
#include <stdlib.h>
#include "../include/ListType.h"
#include "../include/BookType.h"
#include "../include/StrFunc.h"
// ListType *List_ListNode(ListNode *node)
// {
//     return node->ptr;
// }
// int *int_ListNode(ListNode *node)
// {
//     return node->ptr;
// }
// int *newInt(int v)
// {
//     int *p = malloc(sizeof(int));
//     *p = v;
//     return p;
// }
// void free_int_ListNode(void *ptr)
// {
//     free(ptr);
// }
// void free_List_ListNode(void *ptr)
// {
//     ListType_free((ListType *)ptr);
// }
// int main()
// {
//     useUTF8();
//     printf("%s", "程序使用utf-8编码\n");
//     ListType *list = ListType_ListType(free_List_ListNode);
//     int n = 5;
//     for (int i = 1; i <= n; i++)
//     {
//         ListType *sublist = ListType_ListType(free_int_ListNode);
//         ListType_insert(list, NULL, sublist);
//         for (int j = 1; j <= i; j++)
//         {
//             ListType_insert(sublist, NULL, newInt(j));
//         }
//         ListType_remove(sublist, sublist->head);
//         ListType_insert(sublist, sublist->head, newInt(-1));
//     }
//     ListType_remove(list, list->head->next);
//     for (ListNode *i = list->head; i; i = i->next)
//     {
//         ListType *sublist = List_ListNode(i);
//         printf("%lld: ", sublist->size);
//         for (ListNode *j = sublist->head; j; j = j->next)
//         {
//             int *p = int_ListNode(j);
//             printf("%d ", *p);
//         }
//         putchar('\n');
//     }
//     ListType_free(list);
//     return 0;
// }
// void useUTF8()
// {
//     system("chcp 65001");
//     system("cls");
// }
void print(ListType *list)
{
    for (ListNode *ite = list->head; ite; ite = ite->next)
    {
        printf("|%s|\n", Str_ListNode(ite));
    }
}
int main()
{
    // useUTF8();
    char *csvStr = Str_fromFile("./测试.csv");
    ListType *list = Str_split(csvStr, "\n", 1);
    print(list);
    ListType *list2 = Str_split(Str_ListNode(list->head), ",", 0);
    ListType *list3 = ListType_ListType(free);
    for (ListNode *ite = list2->tail; ite; ite = ite->prev)
    {
        ListType_insert(list3, NULL, Str_CSVMode(Str_ListNode(ite)));
    }
    char *res = Str_join(list3, ",");
    printf("%s\n", res);
    Str_toFile(res, "./test1.csv");

    free(res);
    free(csvStr);
    ListType_free(list2);
    ListType_free(list);
    printf("%s", "程序运行结束");
    return 0;
}
